package com.smartrobot.smartrobot.util;

import java.io.File;

import android.content.Context;
import android.graphics.Bitmap;

import com.nostra13.universalimageloader.cache.disc.impl.LimitedAgeDiscCache;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
import com.nostra13.universalimageloader.utils.StorageUtils;
import com.smartrobot.smartrobot.R;

public class ImageLoaderApi {


	/**
	 * ImageLoader
	 *
	 */

		static ImageLoaderConfiguration config;
		static DisplayImageOptions options;


		@SuppressWarnings("deprecation")
		public static void initImageLoaderApi(Context context) {


			File cacheDir = StorageUtils.getOwnCacheDirectory(context, "SmartRobot/Picture");
			System.out.println("path-->"+cacheDir.getAbsolutePath());


			config = new ImageLoaderConfiguration.Builder(context)
					.memoryCacheExtraOptions(320, 320)
					.threadPoolSize(3)
					.threadPriority(Thread.NORM_PRIORITY - 2)
					.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))
					.memoryCacheSize(2 * 1024 * 1024)//
					.discCacheSize(50 * 1024 * 1024)//
					.discCacheFileCount(100)
					.discCache(new LimitedAgeDiscCache(cacheDir, 10000))
					.discCacheFileNameGenerator(new HashCodeFileNameGenerator())
					.tasksProcessingOrder(QueueProcessingType.LIFO)
					.discCacheFileCount(100)
					.denyCacheImageMultipleSizesInMemory()
				    .discCache(new UnlimitedDiscCache(cacheDir))
					.imageDownloader(
							new BaseImageDownloader(context, 5 * 1000, 30 * 1000)) // connectTimeout
																				// (5
					.build();

			ImageLoader.getInstance().init(config);

		}

    public static void initImageLoaderApiActivePic(Context context) {

        //存储位置
        File cacheDir = StorageUtils.getOwnCacheDirectory(context, "SmartRobot/"+FileUtil.CacheDATA+"/ActivePicData/");
        System.out.println("path-->"+cacheDir.getAbsolutePath());

        // 配置属性 可以在application配置
        config = new ImageLoaderConfiguration.Builder(context)
                .memoryCacheExtraOptions(320, 320)
                        // 缓存图片的最大长宽
                .threadPoolSize(3)
                        // 线程池加载数量
                .threadPriority(Thread.NORM_PRIORITY - 2)
                        // 线程优先级
                .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))
                .memoryCacheSize(2 * 1024 * 1024)// 通过自己内存缓存实现
                .discCacheSize(50 * 1024 * 1024)
                .discCacheFileCount(100)
                .discCache(new LimitedAgeDiscCache(cacheDir, 3000000))
                .discCacheFileNameGenerator(new HashCodeFileNameGenerator())//创建图片的唯一名字，用使用url
                .tasksProcessingOrder(QueueProcessingType.LIFO)
                .discCacheFileCount(100)
                .denyCacheImageMultipleSizesInMemory()
                .discCache(new UnlimitedDiscCache(cacheDir))//自定义缓存路径
                .imageDownloader(
                        new BaseImageDownloader(context, 5 * 1000, 30 * 1000)) // connectTimeout
                        // (5
                .build();

        ImageLoader.getInstance().init(config);

    }

    public static void initImageLoaderApiInformationPic(Context context) {

        //存储位置
        File cacheDir = StorageUtils.getOwnCacheDirectory(context, "SmartRobot/"+FileUtil.CacheDATA+"/InformationPicData/");
        System.out.println("path-->"+cacheDir.getAbsolutePath());

        // 配置属性 可以在application配置
        config = new ImageLoaderConfiguration.Builder(context)
                .memoryCacheExtraOptions(320, 320)
                        // 缓存图片的最大长宽
                .threadPoolSize(3)
                        // 线程池加载数量
                .threadPriority(Thread.NORM_PRIORITY - 2)
                        // 线程优先级
                .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))
                .memoryCacheSize(2 * 1024 * 1024)// 通过自己内存缓存实现
                .discCacheSize(50 * 1024 * 1024)
                .discCacheFileCount(100)
                .discCache(new LimitedAgeDiscCache(cacheDir, 3000000))
                .discCacheFileNameGenerator(new HashCodeFileNameGenerator())//创建图片的唯一名字，用使用url
                .tasksProcessingOrder(QueueProcessingType.LIFO)
                .discCacheFileCount(100)
                .denyCacheImageMultipleSizesInMemory()
                .discCache(new UnlimitedDiscCache(cacheDir))//自定义缓存路径
                .imageDownloader(
                        new BaseImageDownloader(context, 5 * 1000, 30 * 1000)) // connectTimeout
                        // (5
                .build();

        ImageLoader.getInstance().init(config);

    }

    /**
     *  图片显示方式和解压方式
     */
    @SuppressWarnings("deprecation")
    public static DisplayImageOptions getOptions(){

        options = new DisplayImageOptions.Builder()
                .showImageOnLoading(R.drawable.ic_error)// 加载时候显示的照片
                .showImageForEmptyUri(R.drawable.ic_empty)// 空uri显示的图片
                .showImageOnFail(R.drawable.ic_error)// 错误显示的图片
                .cacheInMemory(true)// 下载图片是否缓存在内存中 这样才不会出现多次更新
                .cacheOnDisc(true)// 下载图片缓存在sd卡中
                .considerExifParams(true)// 是否考虑JPEG图像EXIF参数（旋转，翻转）
                .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)// 设置图片以如何的编码方式显示
                .bitmapConfig(Bitmap.Config.RGB_565)// 设置图片的解码类型//
                        // .decodingOptions(android.graphics.BitmapFactory.Options
                        // decodingOptions)//设置图片的解码配置
                        // .delayBeforeLoading(int delayInMillis)//int
                        // delayInMillis为你设置的下载前的延迟时间
                        // 设置图片加入缓存前，对bitmap进行设置
                        // .preProcessor(BitmapProcessor preProcessor)
//		.resetViewBeforeLoading(true)// 设置图片在下载前是否重置，复位
//		.displayer(new RoundedBitmapDisplayer(20))// 是否设置为圆角，弧度为多少
//		.displayer(new FadeInBitmapDisplayer(100))// 是否图片加载好后渐入的动画时间
                .build();// 构建完成
        return options;

    }
    /**
     *  图片显示方式和解压方式
     */
		@SuppressWarnings("deprecation")

        public static DisplayImageOptions getActivePicOptions(){

            options = new DisplayImageOptions.Builder()
		            .showImageOnLoading(R.drawable.ic_stub)// 加载时候显示的照片
                    .showImageForEmptyUri(R.drawable.ic_empty)// 空uri显示的图片
                    .showImageOnFail(R.drawable.ic_picerror)// 错误显示的图片
                    .cacheInMemory(true)// 下载图片是否缓存在内存中 这样才不会出现多次更新
                    .cacheOnDisc(true)// 下载图片缓存在sd卡中
                    .considerExifParams(true)// 是否考虑JPEG图像EXIF参数（旋转，翻转）
                    .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)// 设置图片以如何的编码方式显示
                    .bitmapConfig(Bitmap.Config.RGB_565)// 设置图片的解码类型//
                            // .decodingOptions(android.graphics.BitmapFactory.Options
                            // decodingOptions)//设置图片的解码配置
                            // .delayBeforeLoading(int delayInMillis)//int
                            // delayInMillis为你设置的下载前的延迟时间
                            // 设置图片加入缓存前，对bitmap进行设置
                            // .preProcessor(BitmapProcessor preProcessor)
//		.resetViewBeforeLoading(true)// 设置图片在下载前是否重置，复位
//		.displayer(new RoundedBitmapDisplayer(20))// 是否设置为圆角，弧度为多少
//		.displayer(new FadeInBitmapDisplayer(100))// 是否图片加载好后渐入的动画时间
                    .build();// 构建完成

            return options;

        }

    /**
     *  图片显示方式和解压方式
     */
    @SuppressWarnings("deprecation")

    public static DisplayImageOptions getActiveBigPicOptions(){

        options = new DisplayImageOptions.Builder()
                //不要显示加载时的图片出现错误
//		        .showImageOnLoading(R.drawable.ic_stub)// 加载时候显示的照片
                .showImageForEmptyUri(R.drawable.ic_empty)// 空uri显示的图片
                .showImageOnFail(R.drawable.ic_picerror)// 错误显示的图片
//                .cacheInMemory(true)// 下载图片是否缓存在内存中 这样才不会出现多次更新
//                .cacheOnDisc(true)// 下载图片缓存在sd卡中
                .considerExifParams(true)// 是否考虑JPEG图像EXIF参数（旋转，翻转）
                .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)// 设置图片以如何的编码方式显示
                .bitmapConfig(Bitmap.Config.RGB_565)// 设置图片的解码类型//
                        // .decodingOptions(android.graphics.BitmapFactory.Options
                        // decodingOptions)//设置图片的解码配置
                        // .delayBeforeLoading(int delayInMillis)//int
                        // delayInMillis为你设置的下载前的延迟时间
                        // 设置图片加入缓存前，对bitmap进行设置
                        // .preProcessor(BitmapProcessor preProcessor)
//		.resetViewBeforeLoading(true)// 设置图片在下载前是否重置，复位
//		.displayer(new RoundedBitmapDisplayer(20))// 是否设置为圆角，弧度为多少
//		.displayer(new FadeInBitmapDisplayer(100))// 是否图片加载好后渐入的动画时间
                .build();// 构建完成

        return options;

    }




    public static  ImageLoaderConfiguration getImageLoaderConfig(Context context){
        File cacheDir = StorageUtils.getOwnCacheDirectory(context, "SmartRobot/Picture/headImg");
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
                .memoryCacheExtraOptions(320, 320)
                .threadPoolSize(3)
                .threadPriority(Thread.NORM_PRIORITY - 2)
                .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))
                .memoryCacheSize(2 * 1024 * 1024)//


                .discCacheSize(50 * 1024 * 1024)//
                .discCacheFileCount(100)
                .discCache(new LimitedAgeDiscCache(cacheDir, 10000))
                .discCacheFileNameGenerator(new HashCodeFileNameGenerator())
                .tasksProcessingOrder(QueueProcessingType.LIFO)
                .discCacheFileCount(100)
                .denyCacheImageMultipleSizesInMemory()
                .discCache(new UnlimitedDiscCache(cacheDir))
                .imageDownloader(
                        new BaseImageDownloader(context, 5 * 1000, 30 * 1000)) // connectTimeout
                        // (5
                .build();
        return config;
    }

}
